diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index 474ca9c..9c887d8 100755
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -69,12 +69,12 @@
 		$drivers = (isset($params[$key])) ? $params[$key] : $CI->config->item($key);
 		if ($drivers)
 		{
-			if (!is_array($drivers)) $drivers = array($drivers);
+			if ( ! is_array($drivers)) $drivers = array($drivers);
 
 			// Add driver names to valid list
 			foreach ($drivers as $driver)
 			{
-				if (!in_array(strtolower($driver), array_map('strtolower', $this->valid_drivers)))
+				if ( ! in_array(strtolower($driver), array_map('strtolower', $this->valid_drivers)))
 				{
 					$this->valid_drivers[] = $driver;
 				}
@@ -84,8 +84,8 @@
 		// Get driver to load
 		$key = 'sess_driver';
 		$driver = (isset($params[$key])) ? $params[$key] : $CI->config->item($key);
-		if (!$driver) $driver = 'cookie';
-		if (!in_array('session_'.strtolower($driver), array_map('strtolower', $this->valid_drivers)))
+		if ( ! $driver) $driver = 'cookie';
+		if ( ! in_array('session_'.strtolower($driver), array_map('strtolower', $this->valid_drivers)))
 		{
 			$this->valid_drivers[] = 'Session_'.$driver;
 		}
@@ -182,7 +182,7 @@
 	public function userdata($item)
 	{
 		// Return value or FALSE if not found
-		return (!isset($this->userdata[$item])) ? FALSE : $this->userdata[$item];
+		return ( ! isset($this->userdata[$item])) ? NULL : $this->userdata[$item];
 	}
 
 	/**
@@ -193,7 +193,7 @@
 	public function all_userdata()
 	{
 		// Return entire array
-		return (!isset($this->userdata)) ? FALSE : $this->userdata;
+		return ( ! isset($this->userdata)) ? NULL : $this->userdata;
 	}
 
 	/**
@@ -362,7 +362,7 @@
 
 		// Get or create expiration list
 		$expirations = $this->userdata(self::EXPIRATION_KEY);
-		if (!$expirations)
+		if ( ! $expirations)
 		{
 			$expirations = array();
 		}
@@ -392,7 +392,7 @@
 	{
 		// Get expirations list
 		$expirations = $this->userdata(self::EXPIRATION_KEY);
-		if (!$expirations || !count($expirations))
+		if ( ! $expirations || ! count($expirations))
 		{
 			// Nothing to do
 			return;
@@ -482,7 +482,7 @@
 	{
 		// Get expirations list
 		$expirations = $this->userdata(self::EXPIRATION_KEY);
-		if (!$expirations || !count($expirations))
+		if ( ! $expirations ||  ! count($expirations))
 		{
 			// Nothing to do
 			return;
diff --git a/system/libraries/Session/drivers/Session_cookie.php b/system/libraries/Session/drivers/Session_cookie.php
index 255a1ae..e39ada0 100755
--- a/system/libraries/Session/drivers/Session_cookie.php
+++ b/system/libraries/Session/drivers/Session_cookie.php
@@ -516,7 +516,7 @@
 	protected function _sess_update($force = FALSE)
 	{
 		// We only update the session every five minutes by default (unless forced)
-		if (!$force && ($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now)
+		if ( ! $force && ($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now)
 		{
 			return;
 		}
diff --git a/system/libraries/Session/drivers/Session_native.php b/system/libraries/Session/drivers/Session_native.php
index 7fbe9f8..8388e06 100755
--- a/system/libraries/Session/drivers/Session_native.php
+++ b/system/libraries/Session/drivers/Session_native.php
@@ -161,10 +161,10 @@
 	 * Regenerate the session id
 	 *
 	 * @access	public
-	 * @param	boolean	Destroy session data flag (default: false)
+	 * @param	boolean	Destroy session data flag (default: FALSE)
 	 * @return	void
 	 */
-	public function sess_regenerate($destroy = false)
+	public function sess_regenerate($destroy = FALSE)
 	{
 		// Just regenerate id, passing destroy flag
 		session_regenerate_id($destroy);
